// 选中的返回值
export type ChoseItem = {
  areaCode: string; // 区号： 例：+86
} & AreaCodeItem;

// 使用传入配置项
export interface AddConf {
  el: HTMLInputElement;
  value?: string; // 默认值
  disabled?: boolean;
  change?: (conf: ChoseItem) => any; // 修改
  open?: () => void; // 打开
  close?: () => void; // 关闭
  filedLabel?: AreaCodeKey; // 用于显示的字段，优先级低于parseLabel
  parseLabel?: (data: AreaCodeItem) => string; // 处理显示字段的方法, 优先级高于filedLabel
  cb?: (el: HTMLInputElement) => void; // 回调
  lang?: "CN" | "EN";
}
// 初始化参数
export interface InitConf {
  cb?: () => void;
  lang?: "CN" | "EN";
}

// 区号
export interface AreaCodeItem {
  // 00开头的区号
  areaCodeForZero: string;
  // +号开头的区号
  areaCodeForPlusSign: string;
  // 中文名称
  zhName: string;
  // 英文名称
  enName: string;
  // 国家/地区二字码
  simpleCode: string;
  // 显示的选项
  label?: string;
  isUsed?: boolean
}
export type AreaCodeKey = Exclude<keyof AreaCodeItem, never>;
// 常用的区号，统计下次数做排序
export interface StapleCodeItem {
  count: number;
  value: AreaCodeItem;
}
// 缓存数据格式
export interface CacheAreaCode {
  timestamp: string;
  list: AreaCodeItem[];
}

export type Lang = "CN" | "EN";


// 组件属性
export interface Props {
  // 必传
  options: AreaCodeItem[]; // 选项
  lang: "CN" | "EN";
  uid: string
  
  width?: string; // 尺寸
  height?: string;
  disabled?: boolean; // 禁用
  readonly?: boolean; // 只读（）
  ins:any // 组件上下文

  // 下方是事件
  change: (codeItem: ChoseItem) => any; // 输入（changge必定触发input，所以手动更新不触发change）
  input: (codeItem: ChoseItem) => any; // 输入
  filedLabel: AreaCodeKey | null; // 用于显示的字段，优先级低于parseLabel
  parseLabel: ((data: AreaCodeItem) => string) | null; // 处理显示字段的方法, 优先级高于filedLabel
  getOldValue?: () => string // 用于获取web-component的value值
  oldValue: string

  // 以下属性都是在模板内部才需要用到
  // _updArea?: (code:string) => void // 用于手动更新显示内容
  // _originOptions?: AreaCodeItem[] // 原始的选项
}

export const ZH = "CN";
// 缓存次数的key
export const STOREKEY = "web-stapleCode";
// 常用的最大长度
export const STOREMAX = 3;
// 缓存接口数据最大时长(24小时)
export const MAXAGE = 24 * 3600 * 1000;


export const STATICAREA: Readonly<AreaCodeItem>[] = [
  {
    areaCodeForZero: "0086",
    areaCodeForPlusSign: "++86",
    zhName: "中国",
    enName: "China",
    simpleCode: "CN",
  },
  {
    areaCodeForZero: "00355",
    areaCodeForPlusSign: "++355",
    zhName: "阿尔巴尼亚",
    enName: "Albania",
    simpleCode: "AL",
  },
  {
    areaCodeForZero: "00213",
    areaCodeForPlusSign: "++213",
    zhName: "阿尔及利亚",
    enName: "Algeria",
    simpleCode: "DZ",
  },
  {
    areaCodeForZero: "0093",
    areaCodeForPlusSign: "++93",
    zhName: "阿富汗",
    enName: "Afghanistan",
    simpleCode: "AF",
  },
  {
    areaCodeForZero: "0054",
    areaCodeForPlusSign: "++54",
    zhName: "阿根廷",
    enName: "Argentina",
    simpleCode: "AR",
  },
  {
    areaCodeForZero: "00971",
    areaCodeForPlusSign: "++971",
    zhName: "阿联酋",
    enName: "United Arab Emirates",
    simpleCode: "AE",
  },
  {
    areaCodeForZero: "00297",
    areaCodeForPlusSign: "++297",
    zhName: "阿鲁巴",
    enName: "Aruba",
    simpleCode: "AW",
  },
  {
    areaCodeForZero: "00968",
    areaCodeForPlusSign: "++968",
    zhName: "阿曼",
    enName: "Oman",
    simpleCode: "OM",
  },
  {
    areaCodeForZero: "00994",
    areaCodeForPlusSign: "++994",
    zhName: "阿塞拜疆",
    enName: "Azerbaijan",
    simpleCode: "AZ",
  },
  {
    areaCodeForZero: "0020",
    areaCodeForPlusSign: "++20",
    zhName: "埃及",
    enName: "Egypt",
    simpleCode: "EG",
  },
  {
    areaCodeForZero: "00251",
    areaCodeForPlusSign: "++251",
    zhName: "埃塞俄比亚",
    enName: "Ethiopia",
    simpleCode: "ET",
  },
  {
    areaCodeForZero: "00353",
    areaCodeForPlusSign: "++353",
    zhName: "爱尔兰",
    enName: "Ireland",
    simpleCode: "IE",
  },
  {
    areaCodeForZero: "00372",
    areaCodeForPlusSign: "++372",
    zhName: "爱沙尼亚",
    enName: "Estonia",
    simpleCode: "EE",
  },
  {
    areaCodeForZero: "00376",
    areaCodeForPlusSign: "++376",
    zhName: "安道尔",
    enName: "Andorra",
    simpleCode: "AD",
  },
  {
    areaCodeForZero: "00244",
    areaCodeForPlusSign: "++244",
    zhName: "安哥拉",
    enName: "Angola",
    simpleCode: "AO",
  },
  {
    areaCodeForZero: "001264",
    areaCodeForPlusSign: "++1264",
    zhName: "安圭拉",
    enName: "Anguilla",
    simpleCode: "AI",
  },
  {
    areaCodeForZero: "001268",
    areaCodeForPlusSign: "++1268",
    zhName: "安提瓜和巴布达",
    enName: "Antigua and Barbuda",
    simpleCode: "AG",
  },
  {
    areaCodeForZero: "0043",
    areaCodeForPlusSign: "++43",
    zhName: "奥地利",
    enName: "Austria",
    simpleCode: "AT",
  },
  {
    areaCodeForZero: "0061",
    areaCodeForPlusSign: "++61",
    zhName: "澳大利亚",
    enName: "Australia",
    simpleCode: "AU",
  },
  {
    areaCodeForZero: "001246",
    areaCodeForPlusSign: "++1246",
    zhName: "巴巴多斯",
    enName: "Barbados",
    simpleCode: "BB",
  },
  {
    areaCodeForZero: "00675",
    areaCodeForPlusSign: "++675",
    zhName: "巴布亚新几内亚",
    enName: "Papua New Guinea",
    simpleCode: "PG",
  },
  {
    areaCodeForZero: "001242",
    areaCodeForPlusSign: "++1242",
    zhName: "巴哈马",
    enName: "Bahamas",
    simpleCode: "BS",
  },
  {
    areaCodeForZero: "0092",
    areaCodeForPlusSign: "++92",
    zhName: "巴基斯坦",
    enName: "Pakistan",
    simpleCode: "PK",
  },
  {
    areaCodeForZero: "00595",
    areaCodeForPlusSign: "++595",
    zhName: "巴拉圭",
    enName: "Paraguay",
    simpleCode: "PY",
  },
  {
    areaCodeForZero: "00970",
    areaCodeForPlusSign: "++970",
    zhName: "巴勒斯坦",
    enName: "Palestine",
    simpleCode: "PS",
  },
  {
    areaCodeForZero: "00973",
    areaCodeForPlusSign: "++973",
    zhName: "巴林",
    enName: "Bahrain",
    simpleCode: "BH",
  },
  {
    areaCodeForZero: "00507",
    areaCodeForPlusSign: "++507",
    zhName: "巴拿马",
    enName: "Panama",
    simpleCode: "PA",
  },
  {
    areaCodeForZero: "0055",
    areaCodeForPlusSign: "++55",
    zhName: "巴西",
    enName: "Brazil",
    simpleCode: "BR",
  },
  {
    areaCodeForZero: "00375",
    areaCodeForPlusSign: "++375",
    zhName: "白俄罗斯",
    enName: "Belarus",
    simpleCode: "BY",
  },
  {
    areaCodeForZero: "001441",
    areaCodeForPlusSign: "++1441",
    zhName: "百慕大",
    enName: "Bermuda",
    simpleCode: "BM",
  },
  {
    areaCodeForZero: "00359",
    areaCodeForPlusSign: "++359",
    zhName: "保加利亚",
    enName: "Bulgaria",
    simpleCode: "BG",
  },
  {
    areaCodeForZero: "00229",
    areaCodeForPlusSign: "++229",
    zhName: "贝宁",
    enName: "Benin",
    simpleCode: "BJ",
  },
  {
    areaCodeForZero: "0032",
    areaCodeForPlusSign: "++32",
    zhName: "比利时",
    enName: "Belgium",
    simpleCode: "BE",
  },
  {
    areaCodeForZero: "00354",
    areaCodeForPlusSign: "++354",
    zhName: "冰岛",
    enName: "Iceland",
    simpleCode: "IS",
  },
  {
    areaCodeForZero: "00591",
    areaCodeForPlusSign: "++591",
    zhName: "玻利维亚",
    enName: "Bolivia",
    simpleCode: "BO",
  },
  {
    areaCodeForZero: "001787",
    areaCodeForPlusSign: "++1787",
    zhName: "波多黎各",
    enName: "The Commonwealth of Puerto Rico",
    simpleCode: "PR",
  },
  {
    areaCodeForZero: "00387",
    areaCodeForPlusSign: "++387",
    zhName: "波黑",
    enName: "Bosnia and Herzegovina",
    simpleCode: "BA",
  },
  {
    areaCodeForZero: "0048",
    areaCodeForPlusSign: "++48",
    zhName: "波兰",
    enName: "Poland",
    simpleCode: "PL",
  },
  {
    areaCodeForZero: "00267",
    areaCodeForPlusSign: "++267",
    zhName: "博茨瓦纳",
    enName: "Botswana",
    simpleCode: "BW",
  },
  {
    areaCodeForZero: "00501",
    areaCodeForPlusSign: "++501",
    zhName: "伯利兹",
    enName: "Belize",
    simpleCode: "BZ",
  },
  {
    areaCodeForZero: "00975",
    areaCodeForPlusSign: "++975",
    zhName: "不丹",
    enName: "Bhutan",
    simpleCode: "BT",
  },
  {
    areaCodeForZero: "00226",
    areaCodeForPlusSign: "++226",
    zhName: "布基纳法索",
    enName: "Burkina Faso",
    simpleCode: "BF",
  },
  {
    areaCodeForZero: "00257",
    areaCodeForPlusSign: "++257",
    zhName: "布隆迪",
    enName: "Burundi",
    simpleCode: "BI",
  },
  {
    areaCodeForZero: "00240",
    areaCodeForPlusSign: "++240",
    zhName: "赤道几内亚",
    enName: "Equatorial Guinea",
    simpleCode: "GQ",
  },
  {
    areaCodeForZero: "0045",
    areaCodeForPlusSign: "++45",
    zhName: "丹麦",
    enName: "Denmark",
    simpleCode: "DK",
  },
  {
    areaCodeForZero: "0049",
    areaCodeForPlusSign: "++49",
    zhName: "德国",
    enName: "Germany",
    simpleCode: "DE",
  },
  {
    areaCodeForZero: "00670",
    areaCodeForPlusSign: "++670",
    zhName: "东帝汶",
    enName: "Timor-Leste",
    simpleCode: "TL",
  },
  {
    areaCodeForZero: "00228",
    areaCodeForPlusSign: "++228",
    zhName: "多哥",
    enName: "Togo",
    simpleCode: "TG",
  },
  {
    areaCodeForZero: "001890",
    areaCodeForPlusSign: "++1890",
    zhName: "多米尼加共和国",
    enName: "Dominican Republic",
    simpleCode: "DO",
  },
  {
    areaCodeForZero: "001767",
    areaCodeForPlusSign: "++1767",
    zhName: "多米尼克",
    enName: "Dominica",
    simpleCode: "DM",
  },
  {
    areaCodeForZero: "007",
    areaCodeForPlusSign: "++7",
    zhName: "俄罗斯",
    enName: "Russian Federation",
    simpleCode: "RU",
  },
  {
    areaCodeForZero: "00593",
    areaCodeForPlusSign: "++593",
    zhName: "厄瓜多尔",
    enName: "Ecuador",
    simpleCode: "EC",
  },
  {
    areaCodeForZero: "00291",
    areaCodeForPlusSign: "++291",
    zhName: "厄立特里亚",
    enName: "Eritrea",
    simpleCode: "ER",
  },
  {
    areaCodeForZero: "0033",
    areaCodeForPlusSign: "++33",
    zhName: "法国",
    enName: "France",
    simpleCode: "FR",
  },
  {
    areaCodeForZero: "00298",
    areaCodeForPlusSign: "++298",
    zhName: "法罗群岛",
    enName: "Faroe Islands",
    simpleCode: "FO",
  },
  {
    areaCodeForZero: "00689",
    areaCodeForPlusSign: "++689",
    zhName: "法属波利尼西亚",
    enName: "French Polynesia",
    simpleCode: "PF",
  },
  {
    areaCodeForZero: "00594",
    areaCodeForPlusSign: "++594",
    zhName: "法属圭亚那",
    enName: "French Guiana",
    simpleCode: "GF",
  },
  {
    areaCodeForZero: "0063",
    areaCodeForPlusSign: "++63",
    zhName: "菲律宾",
    enName: "Philippines",
    simpleCode: "PH",
  },
  {
    areaCodeForZero: "00358",
    areaCodeForPlusSign: "++358",
    zhName: "芬兰",
    enName: "Finland",
    simpleCode: "FI",
  },
  {
    areaCodeForZero: "00238",
    areaCodeForPlusSign: "++238",
    zhName: "佛得角",
    enName: "Cabo Verde",
    simpleCode: "CV",
  },
  {
    areaCodeForZero: "00220",
    areaCodeForPlusSign: "++220",
    zhName: "冈比亚",
    enName: "Gambia",
    simpleCode: "GM",
  },
  {
    areaCodeForZero: "00242",
    areaCodeForPlusSign: "++242",
    zhName: "刚果（布）",
    enName: "Congo",
    simpleCode: "CG",
  },
  {
    areaCodeForZero: "00243",
    areaCodeForPlusSign: "++243",
    zhName: "刚果（金）",
    enName: "Congo (Democratic Republic)",
    simpleCode: "CD",
  },
  {
    areaCodeForZero: "0057",
    areaCodeForPlusSign: "++57",
    zhName: "哥伦比亚",
    enName: "Colombia",
    simpleCode: "CO",
  },
  {
    areaCodeForZero: "00506",
    areaCodeForPlusSign: "++506",
    zhName: "哥斯达黎加",
    enName: "Costa Rica",
    simpleCode: "CR",
  },
  {
    areaCodeForZero: "001473",
    areaCodeForPlusSign: "++1473",
    zhName: "格林纳达",
    enName: "Grenada",
    simpleCode: "GD",
  },
  {
    areaCodeForZero: "00299",
    areaCodeForPlusSign: "++299",
    zhName: "格陵兰",
    enName: "Greenland",
    simpleCode: "GL",
  },
  {
    areaCodeForZero: "00995",
    areaCodeForPlusSign: "++995",
    zhName: "格鲁吉亚",
    enName: "Georgia",
    simpleCode: "GE",
  },
  {
    areaCodeForZero: "0053",
    areaCodeForPlusSign: "++53",
    zhName: "古巴",
    enName: "Cuba",
    simpleCode: "CU",
  },
  {
    areaCodeForZero: "00592",
    areaCodeForPlusSign: "++592",
    zhName: "圭亚那",
    enName: "Guyana",
    simpleCode: "GY",
  },
  {
    areaCodeForZero: "007",
    areaCodeForPlusSign: "++7",
    zhName: "哈萨克斯坦",
    enName: "Kazakhstan",
    simpleCode: "KZ",
  },
  {
    areaCodeForZero: "00509",
    areaCodeForPlusSign: "++509",
    zhName: "海地",
    enName: "Haiti",
    simpleCode: "HT",
  },
  {
    areaCodeForZero: "0082",
    areaCodeForPlusSign: "++82",
    zhName: "韩国 南朝鲜",
    enName: "Korea, the Republic of",
    simpleCode: "KR",
  },
  {
    areaCodeForZero: "0031",
    areaCodeForPlusSign: "++31",
    zhName: "荷兰",
    enName: "Netherlands",
    simpleCode: "NL",
  },
  {
    areaCodeForZero: "00599",
    areaCodeForPlusSign: "++599",
    zhName: "荷兰加勒比区",
    enName: "Caribbean Netherlands",
    simpleCode: "BQ",
  },
  {
    areaCodeForZero: "00382",
    areaCodeForPlusSign: "++382",
    zhName: "黑山",
    enName: "Montenegro",
    simpleCode: "ME",
  },
  {
    areaCodeForZero: "00504",
    areaCodeForPlusSign: "++504",
    zhName: "洪都拉斯",
    enName: "Honduras",
    simpleCode: "HN",
  },
  {
    areaCodeForZero: "00686",
    areaCodeForPlusSign: "++686",
    zhName: "基里巴斯",
    enName: "Kiribati",
    simpleCode: "KI",
  },
  {
    areaCodeForZero: "00253",
    areaCodeForPlusSign: "++253",
    zhName: "吉布提",
    enName: "Djibouti",
    simpleCode: "DJ",
  },
  {
    areaCodeForZero: "00331",
    areaCodeForPlusSign: "++331",
    zhName: "吉尔吉斯斯坦",
    enName: "Kyrgyzstan",
    simpleCode: "KG",
  },
  {
    areaCodeForZero: "00224",
    areaCodeForPlusSign: "++224",
    zhName: "几内亚",
    enName: "Guinea",
    simpleCode: "GN",
  },
  {
    areaCodeForZero: "00245",
    areaCodeForPlusSign: "++245",
    zhName: "几内亚比绍",
    enName: "Guinea-Bissau",
    simpleCode: "GW",
  },
  {
    areaCodeForZero: "001",
    areaCodeForPlusSign: "++1",
    zhName: "加拿大",
    enName: "Canada",
    simpleCode: "CA",
  },
  {
    areaCodeForZero: "00233",
    areaCodeForPlusSign: "++233",
    zhName: "加纳",
    enName: "Ghana",
    simpleCode: "GH",
  },
  {
    areaCodeForZero: "00241",
    areaCodeForPlusSign: "++241",
    zhName: "加蓬",
    enName: "Gabon",
    simpleCode: "GA",
  },
  {
    areaCodeForZero: "00855",
    areaCodeForPlusSign: "++855",
    zhName: "柬埔寨",
    enName: "Cambodia",
    simpleCode: "KH",
  },
  {
    areaCodeForZero: "00420",
    areaCodeForPlusSign: "++420",
    zhName: "捷克",
    enName: "Czech Republic",
    simpleCode: "CZ",
  },
  {
    areaCodeForZero: "00263",
    areaCodeForPlusSign: "++263",
    zhName: "津巴布韦",
    enName: "Zimbabwe",
    simpleCode: "ZW",
  },
  {
    areaCodeForZero: "00237",
    areaCodeForPlusSign: "++237",
    zhName: "喀麦隆",
    enName: "Cameroon",
    simpleCode: "CM",
  },
  {
    areaCodeForZero: "00974",
    areaCodeForPlusSign: "++974",
    zhName: "卡塔尔",
    enName: "Qatar",
    simpleCode: "QA",
  },
  {
    areaCodeForZero: "001345",
    areaCodeForPlusSign: "++1345",
    zhName: "开曼群岛",
    enName: "Cayman Islands",
    simpleCode: "KY",
  },
  {
    areaCodeForZero: "00269",
    areaCodeForPlusSign: "++269",
    zhName: "科摩罗",
    enName: "Comoros",
    simpleCode: "KM",
  },
  {
    areaCodeForZero: "00383",
    areaCodeForPlusSign: "++383",
    zhName: "科索沃",
    enName: "Kosovo",
    simpleCode: "XK",
  },
  {
    areaCodeForZero: "00225",
    areaCodeForPlusSign: "++225",
    zhName: "科特迪瓦",
    enName: "Cote d'Ivoire",
    simpleCode: "CI",
  },
  {
    areaCodeForZero: "00965",
    areaCodeForPlusSign: "++965",
    zhName: "科威特",
    enName: "Kuwait",
    simpleCode: "KW",
  },
  {
    areaCodeForZero: "00385",
    areaCodeForPlusSign: "++385",
    zhName: "克罗地亚",
    enName: "Croatia",
    simpleCode: "HR",
  },
  {
    areaCodeForZero: "00254",
    areaCodeForPlusSign: "++254",
    zhName: "肯尼亚",
    enName: "Kenya",
    simpleCode: "KE",
  },
  {
    areaCodeForZero: "00682",
    areaCodeForPlusSign: "++682",
    zhName: "库克群岛",
    enName: "Cook Islands",
    simpleCode: "CK",
  },
  {
    areaCodeForZero: "00371",
    areaCodeForPlusSign: "++371",
    zhName: "拉脱维亚",
    enName: "Latvia",
    simpleCode: "LV",
  },
  {
    areaCodeForZero: "00266",
    areaCodeForPlusSign: "++266",
    zhName: "莱索托",
    enName: "Lesotho",
    simpleCode: "LS",
  },
  {
    areaCodeForZero: "00856",
    areaCodeForPlusSign: "++856",
    zhName: "老挝",
    enName: "Lao People's Democratic Republic",
    simpleCode: "LA",
  },
  {
    areaCodeForZero: "00961",
    areaCodeForPlusSign: "++961",
    zhName: "黎巴嫩",
    enName: "Lebanon",
    simpleCode: "LB",
  },
  {
    areaCodeForZero: "00231",
    areaCodeForPlusSign: "++231",
    zhName: "利比里亚",
    enName: "Liberia",
    simpleCode: "LR",
  },
  {
    areaCodeForZero: "00218",
    areaCodeForPlusSign: "++218",
    zhName: "利比亚",
    enName: "Libya",
    simpleCode: "LY",
  },
  {
    areaCodeForZero: "00370",
    areaCodeForPlusSign: "++370",
    zhName: "立陶宛",
    enName: "Lithuania",
    simpleCode: "LT",
  },
  {
    areaCodeForZero: "00423",
    areaCodeForPlusSign: "++423",
    zhName: "列支敦士登",
    enName: "Liechtenstein",
    simpleCode: "LI",
  },
  {
    areaCodeForZero: "00262",
    areaCodeForPlusSign: "++262",
    zhName: "留尼汪",
    enName: "Reunion",
    simpleCode: "RE",
  },
  {
    areaCodeForZero: "00352",
    areaCodeForPlusSign: "++352",
    zhName: "卢森堡",
    enName: "Luxembourg",
    simpleCode: "LU",
  },
  {
    areaCodeForZero: "00250",
    areaCodeForPlusSign: "++250",
    zhName: "卢旺达",
    enName: "Rwanda",
    simpleCode: "RW",
  },
  {
    areaCodeForZero: "0040",
    areaCodeForPlusSign: "++40",
    zhName: "罗马尼亚",
    enName: "Romania",
    simpleCode: "RO",
  },
  {
    areaCodeForZero: "00261",
    areaCodeForPlusSign: "++261",
    zhName: "马达加斯加",
    enName: "Madagascar",
    simpleCode: "MG",
  },
  {
    areaCodeForZero: "00356",
    areaCodeForPlusSign: "++356",
    zhName: "马耳他",
    enName: "Malta",
    simpleCode: "MT",
  },
  {
    areaCodeForZero: "00960",
    areaCodeForPlusSign: "++960",
    zhName: "马尔代夫",
    enName: "Maldives",
    simpleCode: "MV",
  },
  {
    areaCodeForZero: "00500",
    areaCodeForPlusSign: "++500",
    zhName: "马尔维纳斯群岛（福克兰）",
    enName: "Falkland Islands",
    simpleCode: "FK",
  },
  {
    areaCodeForZero: "00265",
    areaCodeForPlusSign: "++265",
    zhName: "马拉维",
    enName: "Malawi",
    simpleCode: "MW",
  },
  {
    areaCodeForZero: "0060",
    areaCodeForPlusSign: "++60",
    zhName: "马来西亚",
    enName: "Malaysia",
    simpleCode: "MY",
  },
  {
    areaCodeForZero: "00223",
    areaCodeForPlusSign: "++223",
    zhName: "马里",
    enName: "Mali",
    simpleCode: "ML",
  },
  {
    areaCodeForZero: "00389",
    areaCodeForPlusSign: "++389",
    zhName: "马其顿",
    enName: "North Macedonia",
    simpleCode: "MK",
  },
  {
    areaCodeForZero: "00596",
    areaCodeForPlusSign: "++596",
    zhName: "马提尼克",
    enName: "Martinique",
    simpleCode: "MQ",
  },
  {
    areaCodeForZero: "00230",
    areaCodeForPlusSign: "++230",
    zhName: "毛里求斯",
    enName: "Mauritius",
    simpleCode: "MU",
  },
  {
    areaCodeForZero: "00222",
    areaCodeForPlusSign: "++222",
    zhName: "毛里塔尼亚",
    enName: "Mauritania",
    simpleCode: "MR",
  },
  {
    areaCodeForZero: "001",
    areaCodeForPlusSign: "++1",
    zhName: "美国",
    enName: "United States",
    simpleCode: "US",
  },
  {
    areaCodeForZero: "001684",
    areaCodeForPlusSign: "++1684",
    zhName: "美属萨摩亚",
    enName: "American Samoa",
    simpleCode: "AS",
  },
  {
    areaCodeForZero: "00976",
    areaCodeForPlusSign: "++976",
    zhName: "蒙古国 蒙古",
    enName: "Mongolia",
    simpleCode: "MN",
  },
  {
    areaCodeForZero: "001664",
    areaCodeForPlusSign: "++1664",
    zhName: "蒙塞拉特岛",
    enName: "Montserrat",
    simpleCode: "MS",
  },
  {
    areaCodeForZero: "00880",
    areaCodeForPlusSign: "++880",
    zhName: "孟加拉",
    enName: "Bangladesh",
    simpleCode: "BD",
  },
  {
    areaCodeForZero: "0051",
    areaCodeForPlusSign: "++51",
    zhName: "秘鲁",
    enName: "Peru",
    simpleCode: "PE",
  },
  {
    areaCodeForZero: "00691",
    areaCodeForPlusSign: "++691",
    zhName: "密克罗尼西亚联邦",
    enName: "Micronesia (Federated States of)",
    simpleCode: "FM",
  },
  {
    areaCodeForZero: "0095",
    areaCodeForPlusSign: "++95",
    zhName: "缅甸",
    enName: "Myanmar",
    simpleCode: "MM",
  },
  {
    areaCodeForZero: "00373",
    areaCodeForPlusSign: "++373",
    zhName: "摩尔多瓦",
    enName: "Moldova",
    simpleCode: "MD",
  },
  {
    areaCodeForZero: "00212",
    areaCodeForPlusSign: "++212",
    zhName: "摩洛哥",
    enName: "Morocco",
    simpleCode: "MA",
  },
  {
    areaCodeForZero: "00377",
    areaCodeForPlusSign: "++377",
    zhName: "摩纳哥",
    enName: "Monaco",
    simpleCode: "MC",
  },
  {
    areaCodeForZero: "00258",
    areaCodeForPlusSign: "++258",
    zhName: "莫桑比克",
    enName: "Mozambique",
    simpleCode: "MZ",
  },
  {
    areaCodeForZero: "0052",
    areaCodeForPlusSign: "++52",
    zhName: "墨西哥",
    enName: "Mexico",
    simpleCode: "MX",
  },
  {
    areaCodeForZero: "00264",
    areaCodeForPlusSign: "++264",
    zhName: "纳米比亚",
    enName: "Namibia",
    simpleCode: "NA",
  },
  {
    areaCodeForZero: "0027",
    areaCodeForPlusSign: "++27",
    zhName: "南非",
    enName: "South Africa",
    simpleCode: "ZA",
  },
  {
    areaCodeForZero: "00211",
    areaCodeForPlusSign: "++211",
    zhName: "南苏丹",
    enName: "South Sudan",
    simpleCode: "SS",
  },
  {
    areaCodeForZero: "00977",
    areaCodeForPlusSign: "++977",
    zhName: "尼泊尔",
    enName: "Nepal",
    simpleCode: "NP",
  },
  {
    areaCodeForZero: "00505",
    areaCodeForPlusSign: "++505",
    zhName: "尼加拉瓜",
    enName: "Nicaragua",
    simpleCode: "NI",
  },
  {
    areaCodeForZero: "00227",
    areaCodeForPlusSign: "++227",
    zhName: "尼日尔",
    enName: "Niger",
    simpleCode: "NE",
  },
  {
    areaCodeForZero: "00234",
    areaCodeForPlusSign: "++234",
    zhName: "尼日利亚",
    enName: "Nigeria",
    simpleCode: "NG",
  },
  {
    areaCodeForZero: "0047",
    areaCodeForPlusSign: "++47",
    zhName: "挪威",
    enName: "Norway",
    simpleCode: "NO",
  },
  {
    areaCodeForZero: "00680",
    areaCodeForPlusSign: "++680",
    zhName: "帕劳",
    enName: "Palau",
    simpleCode: "PW",
  },
  {
    areaCodeForZero: "00351",
    areaCodeForPlusSign: "++351",
    zhName: "葡萄牙",
    enName: "Portugal",
    simpleCode: "PT",
  },
  {
    areaCodeForZero: "0081",
    areaCodeForPlusSign: "++81",
    zhName: "日本",
    enName: "Japan",
    simpleCode: "JP",
  },
  {
    areaCodeForZero: "0046",
    areaCodeForPlusSign: "++46",
    zhName: "瑞典",
    enName: "Sweden",
    simpleCode: "SE",
  },
  {
    areaCodeForZero: "0041",
    areaCodeForPlusSign: "++41",
    zhName: "瑞士",
    enName: "Switzerland",
    simpleCode: "CH",
  },
  {
    areaCodeForZero: "00503",
    areaCodeForPlusSign: "++503",
    zhName: "萨尔瓦多",
    enName: "El Salvador",
    simpleCode: "SV",
  },
  {
    areaCodeForZero: "00685",
    areaCodeForPlusSign: "++685",
    zhName: "萨摩亚",
    enName: "Samoa",
    simpleCode: "WS",
  },
  {
    areaCodeForZero: "00381",
    areaCodeForPlusSign: "++381",
    zhName: "塞尔维亚",
    enName: "Serbia",
    simpleCode: "RS",
  },
  {
    areaCodeForZero: "00232",
    areaCodeForPlusSign: "++232",
    zhName: "塞拉利昂",
    enName: "Sierra Leone",
    simpleCode: "SL",
  },
  {
    areaCodeForZero: "00221",
    areaCodeForPlusSign: "++221",
    zhName: "塞内加尔",
    enName: "Senegal",
    simpleCode: "SN",
  },
  {
    areaCodeForZero: "00357",
    areaCodeForPlusSign: "++357",
    zhName: "塞浦路斯",
    enName: "Cyprus",
    simpleCode: "CY",
  },
  {
    areaCodeForZero: "00248",
    areaCodeForPlusSign: "++248",
    zhName: "塞舌尔",
    enName: "Seychelles",
    simpleCode: "SC",
  },
  {
    areaCodeForZero: "00966",
    areaCodeForPlusSign: "++966",
    zhName: "沙特阿拉伯",
    enName: "Saudi Arabia",
    simpleCode: "SA",
  },
  {
    areaCodeForZero: "00239",
    areaCodeForPlusSign: "++239",
    zhName: "圣多美和普林西比",
    enName: "Sao Tome and Principe",
    simpleCode: "ST",
  },
  {
    areaCodeForZero: "001869",
    areaCodeForPlusSign: "++1869",
    zhName: "圣基茨和尼维斯",
    enName: "Saint Kitts and Nevis",
    simpleCode: "KN",
  },
  {
    areaCodeForZero: "001758",
    areaCodeForPlusSign: "++1758",
    zhName: "圣卢西亚",
    enName: "Saint Lucia",
    simpleCode: "LC",
  },
  {
    areaCodeForZero: "00508",
    areaCodeForPlusSign: "++508",
    zhName: "圣皮埃尔和密克隆",
    enName: "Saint Pierre and Miquelon",
    simpleCode: "PM",
  },
  {
    areaCodeForZero: "001784",
    areaCodeForPlusSign: "++1784",
    zhName: "圣文森特和格林纳丁斯",
    enName: "Saint Vincent and The Grenadines",
    simpleCode: "VC",
  },
  {
    areaCodeForZero: "0094",
    areaCodeForPlusSign: "++94",
    zhName: "斯里兰卡",
    enName: "Sri Lanka",
    simpleCode: "LK",
  },
  {
    areaCodeForZero: "00421",
    areaCodeForPlusSign: "++421",
    zhName: "斯洛伐克",
    enName: "Slovakia",
    simpleCode: "SK",
  },
  {
    areaCodeForZero: "00386",
    areaCodeForPlusSign: "++386",
    zhName: "斯洛文尼亚",
    enName: "Slovenia",
    simpleCode: "SI",
  },
  {
    areaCodeForZero: "00268",
    areaCodeForPlusSign: "++268",
    zhName: "斯威士兰",
    enName: "Eswatini",
    simpleCode: "SZ",
  },
  {
    areaCodeForZero: "00249",
    areaCodeForPlusSign: "++249",
    zhName: "苏丹",
    enName: "Sudan",
    simpleCode: "SD",
  },
  {
    areaCodeForZero: "00597",
    areaCodeForPlusSign: "++597",
    zhName: "苏里南",
    enName: "Suriname",
    simpleCode: "SR",
  },
  {
    areaCodeForZero: "00252",
    areaCodeForPlusSign: "++252",
    zhName: "索马里",
    enName: "Somalia",
    simpleCode: "SO",
  },
  {
    areaCodeForZero: "00677",
    areaCodeForPlusSign: "++677",
    zhName: "所罗门群岛",
    enName: "Solomon Islands",
    simpleCode: "SB",
  },
  {
    areaCodeForZero: "00992",
    areaCodeForPlusSign: "++992",
    zhName: "塔吉克斯坦",
    enName: "Tajikistan",
    simpleCode: "TJ",
  },
  {
    areaCodeForZero: "0066",
    areaCodeForPlusSign: "++66",
    zhName: "泰国",
    enName: "Thailand",
    simpleCode: "TH",
  },
  {
    areaCodeForZero: "00255",
    areaCodeForPlusSign: "++255",
    zhName: "坦桑尼亚",
    enName: "Tanzania",
    simpleCode: "TZ",
  },
  {
    areaCodeForZero: "00676",
    areaCodeForPlusSign: "++676",
    zhName: "汤加",
    enName: "Tonga",
    simpleCode: "TO",
  },
  {
    areaCodeForZero: "001649",
    areaCodeForPlusSign: "++1649",
    zhName: "特克斯和凯科斯群岛",
    enName: "Turks and Caicos Islands",
    simpleCode: "TC",
  },
  {
    areaCodeForZero: "001809",
    areaCodeForPlusSign: "++1809",
    zhName: "特立尼达和多巴哥",
    enName: "Trinidad and Tobago",
    simpleCode: "TT",
  },
  {
    areaCodeForZero: "00216",
    areaCodeForPlusSign: "++216",
    zhName: "突尼斯",
    enName: "Tunisia",
    simpleCode: "TN",
  },
  {
    areaCodeForZero: "0090",
    areaCodeForPlusSign: "++90",
    zhName: "土耳其",
    enName: "Turkey",
    simpleCode: "TR",
  },
  {
    areaCodeForZero: "00993",
    areaCodeForPlusSign: "++993",
    zhName: "土库曼斯坦",
    enName: "Turkmenistan",
    simpleCode: "TM",
  },
  {
    areaCodeForZero: "00681",
    areaCodeForPlusSign: "++681",
    zhName: "瓦利斯和富图纳",
    enName: "Wallis and Futuna",
    simpleCode: "WF",
  },
  {
    areaCodeForZero: "00678",
    areaCodeForPlusSign: "++678",
    zhName: "瓦努阿图",
    enName: "Vanuatu",
    simpleCode: "VU",
  },
  {
    areaCodeForZero: "00502",
    areaCodeForPlusSign: "++502",
    zhName: "危地马拉",
    enName: "Guatemala",
    simpleCode: "GT",
  },
  {
    areaCodeForZero: "0058",
    areaCodeForPlusSign: "++58",
    zhName: "委内瑞拉",
    enName: "Venezuela",
    simpleCode: "VE",
  },
  {
    areaCodeForZero: "00673",
    areaCodeForPlusSign: "++673",
    zhName: "文莱",
    enName: "Brunei Darussalam",
    simpleCode: "BN",
  },
  {
    areaCodeForZero: "00256",
    areaCodeForPlusSign: "++256",
    zhName: "乌干达",
    enName: "Uganda",
    simpleCode: "UG",
  },
  {
    areaCodeForZero: "00380",
    areaCodeForPlusSign: "++380",
    zhName: "乌克兰",
    enName: "Ukraine",
    simpleCode: "UA",
  },
  {
    areaCodeForZero: "00598",
    areaCodeForPlusSign: "++598",
    zhName: "乌拉圭",
    enName: "Uruguay",
    simpleCode: "UY",
  },
  {
    areaCodeForZero: "00998",
    areaCodeForPlusSign: "++998",
    zhName: "乌兹别克斯坦",
    enName: "Uzbekistan",
    simpleCode: "UZ",
  },
  {
    areaCodeForZero: "0034",
    areaCodeForPlusSign: "++34",
    zhName: "西班牙",
    enName: "Spain",
    simpleCode: "ES",
  },
  {
    areaCodeForZero: "0030",
    areaCodeForPlusSign: "++30",
    zhName: "希腊",
    enName: "Greece",
    simpleCode: "GR",
  },
  {
    areaCodeForZero: "0065",
    areaCodeForPlusSign: "++65",
    zhName: "新加坡",
    enName: "Singapore",
    simpleCode: "SG",
  },
  {
    areaCodeForZero: "00687",
    areaCodeForPlusSign: "++687",
    zhName: "新喀里多尼亚",
    enName: "New Caledonia",
    simpleCode: "NC",
  },
  {
    areaCodeForZero: "0064",
    areaCodeForPlusSign: "++64",
    zhName: "新西兰",
    enName: "New Zealand",
    simpleCode: "NZ",
  },
  {
    areaCodeForZero: "0036",
    areaCodeForPlusSign: "++36",
    zhName: "匈牙利",
    enName: "Hungary",
    simpleCode: "HU",
  },
  {
    areaCodeForZero: "00963",
    areaCodeForPlusSign: "++963",
    zhName: "叙利亚",
    enName: "Syria",
    simpleCode: "SY",
  },
  {
    areaCodeForZero: "001876",
    areaCodeForPlusSign: "++1876",
    zhName: "牙买加",
    enName: "Jamaica",
    simpleCode: "JM",
  },
  {
    areaCodeForZero: "00374",
    areaCodeForPlusSign: "++374",
    zhName: "亚美尼亚",
    enName: "Armenia",
    simpleCode: "AM",
  },
  {
    areaCodeForZero: "00967",
    areaCodeForPlusSign: "++967",
    zhName: "也门",
    enName: "Yemen",
    simpleCode: "YE",
  },
  {
    areaCodeForZero: "00964",
    areaCodeForPlusSign: "++964",
    zhName: "伊拉克",
    enName: "Iraq",
    simpleCode: "IQ",
  },
  {
    areaCodeForZero: "0098",
    areaCodeForPlusSign: "++98",
    zhName: "伊朗",
    enName: "Iran",
    simpleCode: "IR",
  },
  {
    areaCodeForZero: "00972",
    areaCodeForPlusSign: "++972",
    zhName: "以色列",
    enName: "Israel",
    simpleCode: "IL",
  },
  {
    areaCodeForZero: "0039",
    areaCodeForPlusSign: "++39",
    zhName: "意大利",
    enName: "Italy",
    simpleCode: "IT",
  },
  {
    areaCodeForZero: "0091",
    areaCodeForPlusSign: "++91",
    zhName: "印度",
    enName: "India",
    simpleCode: "IN",
  },
  {
    areaCodeForZero: "0062",
    areaCodeForPlusSign: "++62",
    zhName: "印度尼西亚",
    enName: "Indonesia",
    simpleCode: "ID",
  },
  {
    areaCodeForZero: "0044",
    areaCodeForPlusSign: "++44",
    zhName: "英国",
    enName: "United Kingdom",
    simpleCode: "GB",
  },
  {
    areaCodeForZero: "001284",
    areaCodeForPlusSign: "++1284",
    zhName: "英属维尔京群岛",
    enName: "Virgin Islands (British)",
    simpleCode: "VG",
  },
  {
    areaCodeForZero: "00962",
    areaCodeForPlusSign: "++962",
    zhName: "约旦",
    enName: "Jordan",
    simpleCode: "JO",
  },
  {
    areaCodeForZero: "0084",
    areaCodeForPlusSign: "++84",
    zhName: "越南",
    enName: "Vietnam",
    simpleCode: "VN",
  },
  {
    areaCodeForZero: "00260",
    areaCodeForPlusSign: "++260",
    zhName: "赞比亚",
    enName: "Zambia",
    simpleCode: "ZM",
  },
  {
    areaCodeForZero: "00235",
    areaCodeForPlusSign: "++235",
    zhName: "乍得",
    enName: "Chad",
    simpleCode: "TD",
  },
  {
    areaCodeForZero: "00350",
    areaCodeForPlusSign: "++350",
    zhName: "直布罗陀",
    enName: "Gibraltar",
    simpleCode: "GI",
  },
  {
    areaCodeForZero: "0056",
    areaCodeForPlusSign: "++56",
    zhName: "智利",
    enName: "Chile",
    simpleCode: "CL",
  },
  {
    areaCodeForZero: "00236",
    areaCodeForPlusSign: "++236",
    zhName: "中非",
    enName: "Central African Republic",
    simpleCode: "CF",
  },
  {
    areaCodeForZero: "00853",
    areaCodeForPlusSign: "++853",
    zhName: "中国澳门",
    enName: "MACAO,CHINA",
    simpleCode: "MO",
  },
  {
    areaCodeForZero: "00886",
    areaCodeForPlusSign: "++886",
    zhName: "中国台湾",
    enName: "TAIWAN,CHINA",
    simpleCode: "TW",
  },
  {
    areaCodeForZero: "00852",
    areaCodeForPlusSign: "++852",
    zhName: "中国香港",
    enName: "HONG KONG,CHINA",
    simpleCode: "HK",
  },
  {
    areaCodeForZero: "00674",
    areaCodeForPlusSign: "++674",
    zhName: "瑙鲁",
    enName: "Nauru",
    simpleCode: "NR",
  },
  {
    areaCodeForZero: "00679",
    areaCodeForPlusSign: "++679",
    zhName: "斐济群岛",
    enName: "Fiji",
    simpleCode: "FJ",
  },
];